cddde85a681ba2ecdc8a142481f983cf50221ddf,platform/platform-impl/src/com/intellij/openapi/editor/actions/PageDownWithSelectionAction.java,Handler,execute,#Editor#Caret#DataContext#,41

Before Change



    @Override
    public void execute(Editor editor, @NotNull Caret caret, DataContext dataContext) {
      if (editor.isColumnMode() && editor.getCaretModel().supportsMultipleCarets()) {
        int lines = editor.getScrollingModel().getVisibleArea().height / editor.getLineHeight();
        Caret currentCaret = caret;
        for (int i = 0; i < lines; i++) {
          currentCaret = currentCaret.clone(false);
          if (currentCaret == null) {
            break;
          }

After Change


  public static class Handler extends EditorActionHandler {
    @Override
    public void execute(final Editor editor, @Nullable Caret caret, DataContext dataContext) {
      if (!editor.getCaretModel().supportsMultipleCarets()) {
        EditorActionUtil.moveCaretPageDown(editor, true);
        return;
      }
      if (editor.isColumnMode()) {
        int lines = editor.getScrollingModel().getVisibleArea().height / editor.getLineHeight();
        Caret currentCaret = caret == null ? editor.getCaretModel().getPrimaryCaret() : caret;
        for (int i = 0; i < lines; i++) {
          if (!EditorActionUtil.cloneOrRemoveCaret(editor, currentCaret, false)) {
            break;
          }
          currentCaret = editor.getCaretModel().getPrimaryCaret();
        }
      }
      else {
        if (caret == null) {
          editor.getCaretModel().runForEachCaret(new CaretAction() {
            @Override
            public void perform(Caret caret) {
              EditorActionUtil.moveCaretPageDown(editor, true);
            }
          });
        }
        else {
          // assuming caret is equal to CaretModel.getCurrentCaret()